package com.vadmin.vadminjava.db;



import com.vadmin.vadminjava.common.CommonUtils;

import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * 继承自DBconn。修改更新和插入方式。以获取布尔类型结果
 *
 * 修改时间:2014-09-24
 *
 * 修改内容:修改继承类。改为继承C3P0。实现数据库连接池管理
 *
 * @author HMH
 */
public class DBUtil extends C3P0 {

    private static final long serialVersionUID = 1L;

    private static final Logger log = Logger.getLogger(DBUtil.class.getName());

    ResultSet rs = null;

    public DBUtil() {
        super();
    }

    /**
     * 查询所有数据包括单独数据
     *
     * 适用范围:通用
     *
     * 时间:2014-06-18
     *
     * 作者:HMH
     *
     * @param sql
     * @return ResultSet rs(数据集)
     */
    public ResultSet FindAll(String sql) {
        try {
            rs = executeQuery(sql);
        } catch (Exception e) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,CommonUtils.getSystemCurrentTime(),e);
        }
        //返回结果
        return rs;
    }

    /**
     * 插入/更新数据
     *
     * 适用范围:通用
     *
     * 时间:2014-06-20
     *
     * 作者:HMH
     *
     * @param sql
     * @return boolean b
     */
    public boolean insertOrUpdateInfo(String sql) throws Exception {
        boolean b = false;
        try {
            executeUpdate(sql);
            b = true;
        } catch (Exception e) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, CommonUtils.getSystemCurrentTime(), e);
            throw e;
        }
        return b;
    }

    /**
     * 插入/更新数据并返回执行条数
     *
     * 适用范围:通用
     *
     * 时间:2014-06-20
     *
     * 作者:HMH
     *
     * @param sql
     * @return boolean b
     */
    public int insertOrUpdateInfoTONum(String sql) throws Exception {
        int i = 0;
        try {
            i = executeUpdateTOnum(sql);
            return i;
        } catch (Exception e) {
            throw  e;
        }

    }

    /**
     * 批量插入或更新数据
     *
     * 适用范围:通用
     *
     * 时间:2014-09-05
     *
     * 作者:HMH
     *
     * @param sql
     */
    public void executeUpdateArray(List<String> sql) {
        try {
            conn = getConnection();

            Statement stmt = conn.createStatement();

            for (int i = 0; i < sql.size(); i++) {

                stmt.executeUpdate(sql.get(i));
            }

        } catch (Exception e) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, CommonUtils.getSystemCurrentTime(), e);

        }
    }

}
